// 本文件的角色是一个“消息队列消费者”
// 负责从消息队列中取出用户上传的文件，并上传到阿里云OSS

#include "MqUser.h"
#include "OssManager.h"
#include <nlohmann/json.hpp>

int main() {
	// 自行设置amqp的url和队列名
    string uri = "amqp://";  // 提示: 对于名为'/'的vhost，应使用'%2f' 对应 '/'
    string queueName = "";   

    MqConsumer consumer{uri, queueName};

    OssManager ossMng;

    for(;;) {
        string message = consumer.getMessage(); // 阻塞式读取MQ

        if (message == "") {
            std::cerr << "从消息队列中取出无效数据，OSS备份取消" << std::endl;
            continue;
        }

        // 解析消息
        nlohmann::json mesJ = nlohmann::json::parse(message);
        string filePath = mesJ["filePath"];
        string fileName = mesJ["fileName"];
        #if DEBUG
            std::cout << "filePath: " << filePath << std::endl;
            std::cout << "fileName: " << fileName << std::endl << std::endl;
        #endif
        // 将指定磁盘文件备份到阿里云OSS
        ossMng.upLoadFileFromDisk(filePath, fileName);
    }

    return 0;
}


// 编译指令（测试用）
// g++ Ossbackup.cpp -o Ossbackup -std=c++11 -fno-rtti -lalibabacloud-oss-cpp-sdk -lcurl -lcrypto -lpthread -lSimpleAmqpClient -DDEBUG